2021-09-27

Stauts Update 2021

So apparently I am writing status updates now. Since this is my first, I have to decide how far to look back. I think it is best to cover just this year, as there is basically no chance I can remember anything further back with any accuracy. Also I will definitely not write these monthly, because I really don't to that much; Once or twice a year is more realistic. But I do do enough that I will focus only on the big things I did, ignoring most of the smaller patches. And I mostly write these for myself actually, because I think it might be interesting to come back to this in a few years to see what I have been up to in this weird time…

Anyway, this year I have mostly set aside my own big time-sink projects to focus on river. I have co-designed and implemented three iterations of the river-layout protocol extension, which makes river to date the only Wayland compositor to outsource window positioning to an external client (and I can’t think of an X window manager doing that either). I also contributed a few bug fixes as well as quality-of-life improvements, such as input device configuration.

Apparently I have been promoted to “collaborator”, which means I can now help triage issues and PRs on rivers GitHub as well. I kinda like doing that actually, it's an interesting activity. The most challenging aspect of it, at least to me, is being "strict" in the sense of staying true to the planned design, while also considering user feedback (Which often means turning a question or false bug report or vague idea into something that makes sense as a feature request), while also staying somewhat polite. It often requires saying something like "this does not make much sense" or "this is explained in the docs" or "you misunderstood", which is sometimes hard to do nicely.

My involvement with river also gave birth to five new projects: wlopm, wat, stacktile, lswt and river-tag-overlay. The first, wlopm, is a simple CLI tool to control a Wayland compositors output power state through the corresponding protocol extension. wat is a simple xdg-activation client, that I quickly hacked up for some debugging of rivers implementation of that protocol extension. stacktile is an advanced layout generator for river, basically just my personal layout generator polished up and turned into something releasable. lswt is a client for the foreign toplevel protocol, dumping a list of all toplevels in both a human readable and multiple machine parse-able formats. And river-tag-overlay is a desktop widget for river, a pop up that shows the focused tag state whenever that changes.

But I have still done a tiny amount of work on LavaLauncher, resulting in the 2.1.0 release. LavaLauncher now uses a modular event loop, which will make it simple to add more event sources in the future (I try to keep the event sources to a minimum, but it is likely that some of the features I have planned will unfortunately depend on DBus. But thanks to the modular event loop, DBus (and any other additional event source I may add in the future) will always remain strictly optional.). Signal handling has been fixed. Instead of signalfd, which for whatever reason just refused to work after some time, LavaLauncher now uses the traditional self-pipe trick, which while certainly uglier is reliable and portable.

I have also done a lot of experimental changes and started a complete piece-by-piece refactor of all the major abstractions in the lavalauncher-next branch, which hopefully will be the basis for the next release. As part of those changes, I have completely rewritten the configuration parser. Configuration file are now in the INI format, which is simpler to parse, read, write and understand. Configuration has always been the biggest hurdle to new users and hopefully this change fixes that. Also I removed the concept of having multiple bars per one instance of LavaLauncher. It was messy, hard to understand and made the code massively more complicated. Instead, one LavaLauncher instance can now have only a single bar per output, but with multiple different configuration sets.

I created a little tool called boxit, which simply draws character boxes around text from stdin and dumps the result to stdout. This is my first zig code that went beyond its proof of concept stage into an actual project. Somewhat ironic as I created boxit primarily to automate drawing block-comment boxes in C code.

With the creation of snayk, I have finally joined the ranks of indie game developers. Sure, that bare-bones pure Wayland pixman based snake clone might not be much, but technically it counts as an indie game (and technically correct is the best kind of correct, as we all know). And not just was it fun to create, it also helped find a bug or two in river and it is actually fun to play for a few minutes. And even better, I now have a very good counter-argument for everyone claiming that you can not create Wayland windows without a tool kit, helping me win a few more online discussions. Success!

And finally I have contributed a few drive-by patches to a few projects that are not worth listing here. A lot of those are more infrastructure than actual code, because apparently writing man pages and Makefiles is a dying art.

Articles from blogs I read (generated by openring)

whippet lab notebook: guile, heuristics, and heap growth

Greets all! Another brief note today. I have gotten Guile working with one of the Nofl-based collectors, specifically the one that scans all edges conservatively (heap-conservative-mmc / heap-conservative-parallel-mmc). Hurrah!It was a pleasant surprise h…

wingolog, May 22, 2025

Status update, May 2025

Hi! Today wlroots 0.19.0 has finally been released! Among the newly supported protocols, color-management-v1 lays the first stone of HDR support (backend and renderer bits are still being reviewed) and ext-image-copy-capture-v1 enhances the previous screen ca…

emersion, May 15, 2025

Summary of changes for April 2025

Hey everyone!This is the list of all the changes we've done to our projects during the month of April. 100r.co, updated water, ditch bag, woodstove installation, and added new photos and information on first-aid kit. Rabbit Waves, updated Triangular…

Hundred Rabbits, April 30, 2025